<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="cache-control" content="no-cache">
<title>Genivia - WITH_MACRO compile-time flags</title>
<link href="genivia_tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="genivia_content.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="top">
 <div id="titlearea">
  <table height="72px" width="100%" cellspacing="0" cellpadding="0">
   <tbody>
    <tr>
     <td width="10%">&nbsp;</td>
     <td width="175px"><a href="https://www.genivia.com"><img alt="Genivia" src="GeniviaLogo2_trans_noslogan.png"/></a></td>
     <td class="tab_home"><a href="https://www.genivia.com">Home</a></td>
     <td class="tab_home"><a href="https://www.genivia.com/docs.html">Documentation</a></td>
     <td>
      <div style="float: right; font-size: 18px; font-weight: bold;">WITH_MACRO compile-time flags</div>
      <br>
      <div style="float: right; font-size: 10px;">updated Tue Apr 20 2021 by Robert van Engelen</div>
     </td>
     <td width="10%">&nbsp;</td>
    </tr>
   </tbody>
  </table>
 </div>
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__group__with.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a>  </div>
  <div class="headertitle">
<div class="title">WITH_MACRO compile-time flags</div>  </div>
</div><!--header-->
<div class="contents">

<p>This module defines the <code>WITH_MACRO</code> compile-time flags to configure the engine build.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga176c2f40b17a2952361c37c4602a4c37"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga176c2f40b17a2952361c37c4602a4c37">SOAPDEFS_H</a></td></tr>
<tr class="memdesc:ga176c2f40b17a2952361c37c4602a4c37"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default) then the header file specified by this macro is included in the build via <a class="el" href="stdsoap2_8h.html" title="This file defines the common macros, types and functions of the gSOAP API grouped by modules ...">stdsoap2.h</a>.  <a href="#ga176c2f40b17a2952361c37c4602a4c37">More...</a><br /></td></tr>
<tr class="separator:ga176c2f40b17a2952361c37c4602a4c37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga24620333a812a36ed84902ff3d897ff6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga24620333a812a36ed84902ff3d897ff6">WITH_SOAPDEFS_H</a></td></tr>
<tr class="memdesc:ga24620333a812a36ed84902ff3d897ff6"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), a user-supplied file named soapdefs.h is included in the build, i.e. soapdefs.h can be used to configure the build by defining compile-time macros and flags.  <a href="#ga24620333a812a36ed84902ff3d897ff6">More...</a><br /></td></tr>
<tr class="separator:ga24620333a812a36ed84902ff3d897ff6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga447e0fdc3b39acab817a73181b16cc14"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga447e0fdc3b39acab817a73181b16cc14">WITH_COMPAT</a></td></tr>
<tr class="memdesc:ga447e0fdc3b39acab817a73181b16cc14"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), removes dependency on C++ <code>std::string</code> and <code>std::iostream</code> libraries.  <a href="#ga447e0fdc3b39acab817a73181b16cc14">More...</a><br /></td></tr>
<tr class="separator:ga447e0fdc3b39acab817a73181b16cc14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaae03aa5dd66b0251c11ba8fc2fe29ecf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gaae03aa5dd66b0251c11ba8fc2fe29ecf">WITH_LEAN</a></td></tr>
<tr class="memdesc:gaae03aa5dd66b0251c11ba8fc2fe29ecf"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), memory footprint is significantly reduced by removing non-essential features from the engine and from the generated code.  <a href="#gaae03aa5dd66b0251c11ba8fc2fe29ecf">More...</a><br /></td></tr>
<tr class="separator:gaae03aa5dd66b0251c11ba8fc2fe29ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c72f5017edb6930c54a8f70d9fb40b9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga6c72f5017edb6930c54a8f70d9fb40b9">WITH_LEANER</a></td></tr>
<tr class="memdesc:ga6c72f5017edb6930c54a8f70d9fb40b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), memory footprint is further reduced from <code><a class="el" href="group__group__with.html#gaae03aa5dd66b0251c11ba8fc2fe29ecf" title="When this macro is defined at compile time (undefined by default), memory footprint is significantly ...">WITH_LEAN</a></code> by removing non-essential features from the engine and from the generated code.  <a href="#ga6c72f5017edb6930c54a8f70d9fb40b9">More...</a><br /></td></tr>
<tr class="separator:ga6c72f5017edb6930c54a8f70d9fb40b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf82a624c2531f5e26bf234bc39ae07bd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gaf82a624c2531f5e26bf234bc39ae07bd">WITH_FAST</a></td></tr>
<tr class="memdesc:gaf82a624c2531f5e26bf234bc39ae07bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time uses faster memory allocation at a cost of larger memory blocks allocated (defined by default except with <code><a class="el" href="group__group__with.html#gaae03aa5dd66b0251c11ba8fc2fe29ecf" title="When this macro is defined at compile time (undefined by default), memory footprint is significantly ...">WITH_LEAN</a></code> and <code><a class="el" href="group__group__with.html#ga6c72f5017edb6930c54a8f70d9fb40b9" title="When this macro is defined at compile time (undefined by default), memory footprint is further reduce...">WITH_LEANER</a>)</code>  <a href="#gaf82a624c2531f5e26bf234bc39ae07bd">More...</a><br /></td></tr>
<tr class="separator:gaf82a624c2531f5e26bf234bc39ae07bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga77f061a12d88eb8b7dae8b07cf90e29d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga77f061a12d88eb8b7dae8b07cf90e29d">WITH_COOKIES</a></td></tr>
<tr class="memdesc:ga77f061a12d88eb8b7dae8b07cf90e29d"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), HTTP cookie support is enabled in the engine.  <a href="#ga77f061a12d88eb8b7dae8b07cf90e29d">More...</a><br /></td></tr>
<tr class="separator:ga77f061a12d88eb8b7dae8b07cf90e29d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab08b437f239f365c2a266d25e45b0148"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gab08b437f239f365c2a266d25e45b0148">WITH_INSECURE_COOKIES</a></td></tr>
<tr class="memdesc:gab08b437f239f365c2a266d25e45b0148"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), HTTP cookie support is enabled (as <code><a class="el" href="group__group__with.html#ga77f061a12d88eb8b7dae8b07cf90e29d" title="When this macro is defined at compile time (undefined by default), HTTP cookie support is enabled in ...">WITH_COOKIES</a></code>) but allows cookies with their Secure flag set to be sent over insecure channels.  <a href="#gab08b437f239f365c2a266d25e45b0148">More...</a><br /></td></tr>
<tr class="separator:gab08b437f239f365c2a266d25e45b0148"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga40cbd680e7dbdeb63bce1d6d4b7b9620"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga40cbd680e7dbdeb63bce1d6d4b7b9620">WITH_IPV6</a></td></tr>
<tr class="memdesc:ga40cbd680e7dbdeb63bce1d6d4b7b9620"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), IPv6 support is enabled and both IPv4 and IPv6 connections are supported by the engine.  <a href="#ga40cbd680e7dbdeb63bce1d6d4b7b9620">More...</a><br /></td></tr>
<tr class="separator:ga40cbd680e7dbdeb63bce1d6d4b7b9620"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2854fe8474c2f87a9916d892306cb94c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga2854fe8474c2f87a9916d892306cb94c">WITH_IPV6_V6ONLY</a></td></tr>
<tr class="memdesc:ga2854fe8474c2f87a9916d892306cb94c"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), IPv6-only is enabled for port binding at the server side by the engine to ensure that a socket will only use IPv6 without mapping IPv4 to IPv6.  <a href="#ga2854fe8474c2f87a9916d892306cb94c">More...</a><br /></td></tr>
<tr class="separator:ga2854fe8474c2f87a9916d892306cb94c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae5fa06f0e13edb611016c85364b0d0f0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0">WITH_OPENSSL</a></td></tr>
<tr class="memdesc:gae5fa06f0e13edb611016c85364b0d0f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for HTTPS and WS-Security (this macro should also be defined when using plugins that rely on OpenSSL)  <a href="#gae5fa06f0e13edb611016c85364b0d0f0">More...</a><br /></td></tr>
<tr class="separator:gae5fa06f0e13edb611016c85364b0d0f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaba33a0ba79add64c641997a7e5070f27"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27">WITH_GNUTLS</a></td></tr>
<tr class="memdesc:gaba33a0ba79add64c641997a7e5070f27"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library to enable HTTPS in the engine.  <a href="#gaba33a0ba79add64c641997a7e5070f27">More...</a><br /></td></tr>
<tr class="separator:gaba33a0ba79add64c641997a7e5070f27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad30a07ea604aea8cb00f41f6310cf30f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gad30a07ea604aea8cb00f41f6310cf30f">WITH_GZIP</a></td></tr>
<tr class="memdesc:gad30a07ea604aea8cb00f41f6310cf30f"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), enables linkage with the zlib library for HTTP message compression (using compress and gzip methods) when the <code><a class="el" href="group__group__flags.html#gafa62be7ba46b50d58608a066f442c2a8" title="soap_mode ENC output flag value to compress messages sent, requires zlib enabled with compile-time fl...">SOAP_ENC_ZLIB</a></code> mode flag is enabled at runtime.  <a href="#gad30a07ea604aea8cb00f41f6310cf30f">More...</a><br /></td></tr>
<tr class="separator:gad30a07ea604aea8cb00f41f6310cf30f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad2cdc1f87f3fc46b92e957d9e251797c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gad2cdc1f87f3fc46b92e957d9e251797c">WITH_ZLIB</a></td></tr>
<tr class="memdesc:gad2cdc1f87f3fc46b92e957d9e251797c"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), enables linking the zlib library for HTTP message compression when the <code><a class="el" href="group__group__flags.html#gafa62be7ba46b50d58608a066f442c2a8" title="soap_mode ENC output flag value to compress messages sent, requires zlib enabled with compile-time fl...">SOAP_ENC_ZLIB</a></code> mode flag is enabled at runtime.  <a href="#gad2cdc1f87f3fc46b92e957d9e251797c">More...</a><br /></td></tr>
<tr class="separator:gad2cdc1f87f3fc46b92e957d9e251797c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4a743d1499292194cfc81d305500c83f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga4a743d1499292194cfc81d305500c83f">WITH_NTLM</a></td></tr>
<tr class="memdesc:ga4a743d1499292194cfc81d305500c83f"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), enables linkage with the ntlm library for HTTP NTLM authentication.  <a href="#ga4a743d1499292194cfc81d305500c83f">More...</a><br /></td></tr>
<tr class="separator:ga4a743d1499292194cfc81d305500c83f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac12224709e8774c00afebe02a0ee0c8d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gac12224709e8774c00afebe02a0ee0c8d">WITH_C_LOCALE</a></td></tr>
<tr class="memdesc:gac12224709e8774c00afebe02a0ee0c8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (defined by default for most platforms), the C locale is enabled in the engine, opposite of <code><a class="el" href="group__group__with.html#gac587d5d27bcbceffb66741f230333a67" title="When this macro is defined at compile time (undefined by default), the use of the C locale is disable...">WITH_NO_C_LOCALE</a></code>  <a href="#gac12224709e8774c00afebe02a0ee0c8d">More...</a><br /></td></tr>
<tr class="separator:gac12224709e8774c00afebe02a0ee0c8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac587d5d27bcbceffb66741f230333a67"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gac587d5d27bcbceffb66741f230333a67">WITH_NO_C_LOCALE</a></td></tr>
<tr class="memdesc:gac587d5d27bcbceffb66741f230333a67"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), the use of the C locale is disabled in the engine, the opposite of <code><a class="el" href="group__group__with.html#gac12224709e8774c00afebe02a0ee0c8d" title="When this macro is defined at compile time (defined by default for most platforms), the C locale is enabled in the engine, opposite of WITH_NO_C_LOCALE ">WITH_C_LOCALE</a></code>  <a href="#gac587d5d27bcbceffb66741f230333a67">More...</a><br /></td></tr>
<tr class="separator:gac587d5d27bcbceffb66741f230333a67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3a92e63a0dd8b9d3701d001cafcde955"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga3a92e63a0dd8b9d3701d001cafcde955">WITH_INCLUDE_XLOCALE_H</a></td></tr>
<tr class="memdesc:ga3a92e63a0dd8b9d3701d001cafcde955"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (defined by default for most platforms), include xlocale.h to define <code>locale_t</code> and the <code>_l</code> locale-specific functions.  <a href="#ga3a92e63a0dd8b9d3701d001cafcde955">More...</a><br /></td></tr>
<tr class="separator:ga3a92e63a0dd8b9d3701d001cafcde955"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac446a18bcd54c58c0b62362f2e6113e2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gac446a18bcd54c58c0b62362f2e6113e2">WITH_DOM</a></td></tr>
<tr class="memdesc:gac446a18bcd54c58c0b62362f2e6113e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), enables WS-Security signature verification and XML re-canonicalization, i.e. this macro must be defined when using the gSOAP WSSE plugin for WS-Security.  <a href="#gac446a18bcd54c58c0b62362f2e6113e2">More...</a><br /></td></tr>
<tr class="separator:gac446a18bcd54c58c0b62362f2e6113e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa3632d9a171ac29a7cb4a4c4861d8e8d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gaa3632d9a171ac29a7cb4a4c4861d8e8d">WITH_REPLACE_ILLEGAL_UTF8</a></td></tr>
<tr class="memdesc:gaa3632d9a171ac29a7cb4a4c4861d8e8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), replaces UTF-8 content that is outside the Unicode range with the value of <code><a class="el" href="group__group__soap.html#gaafe757ff5b99e03ae2c7814dedf9aa8e" title="A user-definable integer Unicode value representing a character that replaces an invalid Unicode code...">SOAP_UNKNOWN_UNICODE_CHAR</a></code> (Unicode FFFD) to indicate illegal UTF-8, set <code><a class="el" href="group__group__soap.html#gaafe757ff5b99e03ae2c7814dedf9aa8e" title="A user-definable integer Unicode value representing a character that replaces an invalid Unicode code...">SOAP_UNKNOWN_UNICODE_CHAR</a></code> to another integer code if desired (the value is 0xFFFD by default)  <a href="#gaa3632d9a171ac29a7cb4a4c4861d8e8d">More...</a><br /></td></tr>
<tr class="separator:gaa3632d9a171ac29a7cb4a4c4861d8e8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac697013bbde81d22d15d83d122f85f18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gac697013bbde81d22d15d83d122f85f18">WITH_FASTCGI</a></td></tr>
<tr class="memdesc:gac697013bbde81d22d15d83d122f85f18"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), enables and configures the engine and generated code to use FastCGI at the server side.  <a href="#gac697013bbde81d22d15d83d122f85f18">More...</a><br /></td></tr>
<tr class="separator:gac697013bbde81d22d15d83d122f85f18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga93604d4f98eeeedcc7af19ff83192308"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga93604d4f98eeeedcc7af19ff83192308">WITH_NOIO</a></td></tr>
<tr class="memdesc:ga93604d4f98eeeedcc7af19ff83192308"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), removes all IO and socket library calls to replace these with user-supplied callback functions, see the IO callbacks in the user guide.  <a href="#ga93604d4f98eeeedcc7af19ff83192308">More...</a><br /></td></tr>
<tr class="separator:ga93604d4f98eeeedcc7af19ff83192308"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaea95327865324f1aba294f3ae5d13dd4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gaea95327865324f1aba294f3ae5d13dd4">WITH_NOIDREF</a></td></tr>
<tr class="memdesc:gaea95327865324f1aba294f3ae5d13dd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), permanently disables XML ID (<code>id</code> attribute) and REF (<code>href</code> or <code>ref</code> attribute) processing rules associated with SOAP 1.1 and SOAP 1.2 "multi-reference" data to serialize object graphs, this is a more aggressive optimization option than the runtime <code><a class="el" href="group__group__flags.html#gaa631be9579f581f96ea5ecf91b837493" title="soap_mode XML input/output flag value to serialize C/C++ data structures as XML trees without id-href...">SOAP_XML_TREE</a></code> flag.  <a href="#gaea95327865324f1aba294f3ae5d13dd4">More...</a><br /></td></tr>
<tr class="separator:gaea95327865324f1aba294f3ae5d13dd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9e4012870cc520445f8bb0b08f8ae2bc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga9e4012870cc520445f8bb0b08f8ae2bc">WITH_NOHTTP</a></td></tr>
<tr class="memdesc:ga9e4012870cc520445f8bb0b08f8ae2bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), permanently removes the HTTP stack to reduce code size.  <a href="#ga9e4012870cc520445f8bb0b08f8ae2bc">More...</a><br /></td></tr>
<tr class="separator:ga9e4012870cc520445f8bb0b08f8ae2bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1c6f7ec29799a308133930ffc4d7109a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga1c6f7ec29799a308133930ffc4d7109a">WITH_NOZONE</a></td></tr>
<tr class="memdesc:ga1c6f7ec29799a308133930ffc4d7109a"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), removes and ignores the timezone in <em><code>xsd:dateTime</code></em> values.  <a href="#ga1c6f7ec29799a308133930ffc4d7109a">More...</a><br /></td></tr>
<tr class="separator:ga1c6f7ec29799a308133930ffc4d7109a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga376e550466f3e75f529e113fcf36f86a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga376e550466f3e75f529e113fcf36f86a">WITH_NOEMPTYNAMESPACES</a></td></tr>
<tr class="memdesc:ga376e550466f3e75f529e113fcf36f86a"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time, default empty namespaces are not required to parse XML and are disabled from XML messages when the <code><a class="el" href="group__group__flags.html#gaabf4437aeb9a8ae91bfbc3cdce538a6b" title="soap_mode XML output flag value to send XML messages with XML default namespaces for elements instead...">SOAP_XML_DEFAULTNS</a></code> mode flag is used.  <a href="#ga376e550466f3e75f529e113fcf36f86a">More...</a><br /></td></tr>
<tr class="separator:ga376e550466f3e75f529e113fcf36f86a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa0f80155c2f036cd4da1735cafc9e60b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gaa0f80155c2f036cd4da1735cafc9e60b">WITH_NOEMPTYSTRUCT</a></td></tr>
<tr class="separator:gaa0f80155c2f036cd4da1735cafc9e60b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab0e1c923db1547a75ad010a3172c065a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gab0e1c923db1547a75ad010a3172c065a">WITH_NOGLOBAL</a></td></tr>
<tr class="memdesc:gab0e1c923db1547a75ad010a3172c065a"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), omits SOAP Header and Fault serialization code, this flag prevents duplicate definitions in the source code generated by soapcpp2.  <a href="#gab0e1c923db1547a75ad010a3172c065a">More...</a><br /></td></tr>
<tr class="separator:gab0e1c923db1547a75ad010a3172c065a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac22000b4058bb41a88750d10785baaf1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gac22000b4058bb41a88750d10785baaf1">WITH_NONAMESPACES</a></td></tr>
<tr class="memdesc:gac22000b4058bb41a88750d10785baaf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), removes dependence on the global <code><a class="el" href="group__group__namespace.html#gaabfac0a3b8d38498bc5e1e3bc465ead6" title="The global XML namespaces table with entries defined by the Namespace structure and populated in an ...">namespaces</a></code> table, rather users must set the XML namespaces explicitly by calling <code><a class="el" href="group__group__namespace.html#ga5ec913accc705cca3296ab75bae955a5" title="Activates an XML namespace table to generate and resolve xmlns namespace prefixes in XML messages...">soap_set_namespaces</a></code>  <a href="#gac22000b4058bb41a88750d10785baaf1">More...</a><br /></td></tr>
<tr class="separator:gac22000b4058bb41a88750d10785baaf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2e3f4fd002ffd6b7f0b675a2dd78ca17"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga2e3f4fd002ffd6b7f0b675a2dd78ca17">WITH_CDATA</a></td></tr>
<tr class="memdesc:ga2e3f4fd002ffd6b7f0b675a2dd78ca17"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), retains the parsed CDATA sections in literal XML strings.  <a href="#ga2e3f4fd002ffd6b7f0b675a2dd78ca17">More...</a><br /></td></tr>
<tr class="separator:ga2e3f4fd002ffd6b7f0b675a2dd78ca17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa0801009d3ed28b2c66063c26423fa8d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gaa0801009d3ed28b2c66063c26423fa8d">WITH_PURE_VIRTUAL</a></td></tr>
<tr class="memdesc:gaa0801009d3ed28b2c66063c26423fa8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), makes C++ service class operation methods and the copy method pure virtual by defining <code><a class="el" href="group__group__soap.html#gad4edb63b6b20a8e5ac3891550013f64a" title="Macro is set to SOAP_PURE_VIRTUAL = 0 at compile time when macro WITH_PURE_VIRTUAL is defined...">SOAP_PURE_VIRTUAL</a></code> = 0.  <a href="#gaa0801009d3ed28b2c66063c26423fa8d">More...</a><br /></td></tr>
<tr class="separator:gaa0801009d3ed28b2c66063c26423fa8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad994e1b9a0209a5da210eab3a69c52e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#gad994e1b9a0209a5da210eab3a69c52e1">WITH_DEFAULT_VIRTUAL</a></td></tr>
<tr class="memdesc:gad994e1b9a0209a5da210eab3a69c52e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), enables C++ base service classes with default virtual methods returning fault <code><a class="el" href="group__group__errors.html#gab0c5959ec4b7509ce48d9a29c8601fad" title="A soap_status error code: the service request dispatcher did not find a matching service operation fo...">SOAP_NO_METHOD</a></code>  <a href="#gad994e1b9a0209a5da210eab3a69c52e1">More...</a><br /></td></tr>
<tr class="separator:gad994e1b9a0209a5da210eab3a69c52e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3a99ea572d2ad520776c2a92a5f50304"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga3a99ea572d2ad520776c2a92a5f50304">WITH_CASEINSENSITIVETAGS</a></td></tr>
<tr class="memdesc:ga3a99ea572d2ad520776c2a92a5f50304"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), enables case insensitive XML tag name parsing and validation.  <a href="#ga3a99ea572d2ad520776c2a92a5f50304">More...</a><br /></td></tr>
<tr class="separator:ga3a99ea572d2ad520776c2a92a5f50304"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga11ff99091a8f7fa179705bb3bff1aed2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga11ff99091a8f7fa179705bb3bff1aed2">WITH_SOCKET_CLOSE_ON_EXIT</a></td></tr>
<tr class="memdesc:ga11ff99091a8f7fa179705bb3bff1aed2"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), prevents a server port from staying in listening mode after exit by internally setting <code>fcntl(sock, F_SETFD, FD_CLOEXEC)</code>  <a href="#ga11ff99091a8f7fa179705bb3bff1aed2">More...</a><br /></td></tr>
<tr class="separator:ga11ff99091a8f7fa179705bb3bff1aed2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga32da1a1af344a155b0ad01e6dbb7daaa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga32da1a1af344a155b0ad01e6dbb7daaa">WITH_TCPFIN</a></td></tr>
<tr class="memdesc:ga32da1a1af344a155b0ad01e6dbb7daaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), the engine transmits TCP FIN using <code>shutdown(sock, SHUT_WR)</code> after all sends are completed and just before the socket closes.  <a href="#ga32da1a1af344a155b0ad01e6dbb7daaa">More...</a><br /></td></tr>
<tr class="separator:ga32da1a1af344a155b0ad01e6dbb7daaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0f1f2dd7a7d88f5acdaaab010d8e99ff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga0f1f2dd7a7d88f5acdaaab010d8e99ff">WITH_SELF_PIPE</a></td></tr>
<tr class="memdesc:ga0f1f2dd7a7d88f5acdaaab010d8e99ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), the engine is configured to enable <code><a class="el" href="group__group__io.html#ga139afbf916c84724fef3f82aca4857d3" title="Close the connection of the specified context using a self-pipe. ">soap_close_connection</a></code> using a "self-pipe".  <a href="#ga0f1f2dd7a7d88f5acdaaab010d8e99ff">More...</a><br /></td></tr>
<tr class="separator:ga0f1f2dd7a7d88f5acdaaab010d8e99ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3bb3800c453e42fa5549c413b0c917e9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__with.html#ga3bb3800c453e42fa5549c413b0c917e9">WITH_CRTOLF</a></td></tr>
<tr class="memdesc:ga3bb3800c453e42fa5549c413b0c917e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">When this macro is defined at compile time (undefined by default), the engine is configured to replace CRLF (carriage return <code>#xD</code> followed by line feed <code>#xA</code>) by LF and replace single CR by LF.  <a href="#ga3bb3800c453e42fa5549c413b0c917e9">More...</a><br /></td></tr>
<tr class="separator:ga3bb3800c453e42fa5549c413b0c917e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This module defines the <code>WITH_MACRO</code> compile-time flags to configure the engine build. </p>
<p>This module defines the following compile-time flags to configure the engine build:</p><ul>
<li><code><a class="el" href="group__group__with.html#ga176c2f40b17a2952361c37c4602a4c37" title="When this macro is defined at compile time (undefined by default) then the header file specified by t...">SOAPDEFS_H</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga24620333a812a36ed84902ff3d897ff6" title="When this macro is defined at compile time (undefined by default), a user-supplied file named soapdef...">WITH_SOAPDEFS_H</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga447e0fdc3b39acab817a73181b16cc14" title="When this macro is defined at compile time (undefined by default), removes dependency on C++ std::str...">WITH_COMPAT</a></code></li>
<li><code><a class="el" href="group__group__with.html#gaae03aa5dd66b0251c11ba8fc2fe29ecf" title="When this macro is defined at compile time (undefined by default), memory footprint is significantly ...">WITH_LEAN</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga6c72f5017edb6930c54a8f70d9fb40b9" title="When this macro is defined at compile time (undefined by default), memory footprint is further reduce...">WITH_LEANER</a></code></li>
<li><code><a class="el" href="group__group__with.html#gaf82a624c2531f5e26bf234bc39ae07bd" title="When this macro is defined at compile time uses faster memory allocation at a cost of larger memory b...">WITH_FAST</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga77f061a12d88eb8b7dae8b07cf90e29d" title="When this macro is defined at compile time (undefined by default), HTTP cookie support is enabled in ...">WITH_COOKIES</a></code></li>
<li><code><a class="el" href="group__group__with.html#gab08b437f239f365c2a266d25e45b0148" title="When this macro is defined at compile time (undefined by default), HTTP cookie support is enabled (as...">WITH_INSECURE_COOKIES</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga40cbd680e7dbdeb63bce1d6d4b7b9620" title="When this macro is defined at compile time (undefined by default), IPv6 support is enabled and both I...">WITH_IPV6</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga2854fe8474c2f87a9916d892306cb94c" title="When this macro is defined at compile time (undefined by default), IPv6-only is enabled for port bind...">WITH_IPV6_V6ONLY</a></code></li>
<li><code><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0" title="When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for H...">WITH_OPENSSL</a></code></li>
<li><code><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27" title="When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library...">WITH_GNUTLS</a></code></li>
<li><code><a class="el" href="group__group__with.html#gad30a07ea604aea8cb00f41f6310cf30f" title="When this macro is defined at compile time (undefined by default), enables linkage with the zlib libr...">WITH_GZIP</a></code></li>
<li><code><a class="el" href="group__group__with.html#gad2cdc1f87f3fc46b92e957d9e251797c" title="When this macro is defined at compile time (undefined by default), enables linking the zlib library f...">WITH_ZLIB</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga4a743d1499292194cfc81d305500c83f" title="When this macro is defined at compile time (undefined by default), enables linkage with the ntlm libr...">WITH_NTLM</a></code></li>
<li><code><a class="el" href="group__group__with.html#gac12224709e8774c00afebe02a0ee0c8d" title="When this macro is defined at compile time (defined by default for most platforms), the C locale is enabled in the engine, opposite of WITH_NO_C_LOCALE ">WITH_C_LOCALE</a></code></li>
<li><code><a class="el" href="group__group__with.html#gac587d5d27bcbceffb66741f230333a67" title="When this macro is defined at compile time (undefined by default), the use of the C locale is disable...">WITH_NO_C_LOCALE</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga3a92e63a0dd8b9d3701d001cafcde955" title="When this macro is defined at compile time (defined by default for most platforms), include xlocale.h to define locale_t and the _l locale-specific functions. ">WITH_INCLUDE_XLOCALE_H</a></code></li>
<li><code><a class="el" href="group__group__with.html#gac446a18bcd54c58c0b62362f2e6113e2" title="When this macro is defined at compile time (undefined by default), enables WS-Security signature veri...">WITH_DOM</a></code></li>
<li><code><a class="el" href="group__group__with.html#gaa3632d9a171ac29a7cb4a4c4861d8e8d" title="When this macro is defined at compile time (undefined by default), replaces UTF-8 content that is out...">WITH_REPLACE_ILLEGAL_UTF8</a></code></li>
<li><code><a class="el" href="group__group__with.html#gac697013bbde81d22d15d83d122f85f18" title="When this macro is defined at compile time (undefined by default), enables and configures the engine ...">WITH_FASTCGI</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga93604d4f98eeeedcc7af19ff83192308" title="When this macro is defined at compile time (undefined by default), removes all IO and socket library ...">WITH_NOIO</a></code></li>
<li><code><a class="el" href="group__group__with.html#gaea95327865324f1aba294f3ae5d13dd4" title="When this macro is defined at compile time (undefined by default), permanently disables XML ID (id at...">WITH_NOIDREF</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga9e4012870cc520445f8bb0b08f8ae2bc" title="When this macro is defined at compile time (undefined by default), permanently removes the HTTP stack...">WITH_NOHTTP</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga1c6f7ec29799a308133930ffc4d7109a" title="When this macro is defined at compile time (undefined by default), removes and ignores the timezone i...">WITH_NOZONE</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga376e550466f3e75f529e113fcf36f86a" title="When this macro is defined at compile time, default empty namespaces are not required to parse XML an...">WITH_NOEMPTYNAMESPACES</a></code></li>
<li><code><a class="el" href="group__group__with.html#gaa0f80155c2f036cd4da1735cafc9e60b">WITH_NOEMPTYSTRUCT</a></code></li>
<li><code><a class="el" href="group__group__with.html#gab0e1c923db1547a75ad010a3172c065a" title="When this macro is defined at compile time (undefined by default), omits SOAP Header and Fault serial...">WITH_NOGLOBAL</a></code></li>
<li><code><a class="el" href="group__group__with.html#gac22000b4058bb41a88750d10785baaf1" title="When this macro is defined at compile time (undefined by default), removes dependence on the global n...">WITH_NONAMESPACES</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga2e3f4fd002ffd6b7f0b675a2dd78ca17" title="When this macro is defined at compile time (undefined by default), retains the parsed CDATA sections ...">WITH_CDATA</a></code></li>
<li><code><a class="el" href="group__group__with.html#gaa0801009d3ed28b2c66063c26423fa8d" title="When this macro is defined at compile time (undefined by default), makes C++ service class operation ...">WITH_PURE_VIRTUAL</a></code></li>
<li><code><a class="el" href="group__group__with.html#gad994e1b9a0209a5da210eab3a69c52e1" title="When this macro is defined at compile time (undefined by default), enables C++ base service classes w...">WITH_DEFAULT_VIRTUAL</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga3a99ea572d2ad520776c2a92a5f50304" title="When this macro is defined at compile time (undefined by default), enables case insensitive XML tag n...">WITH_CASEINSENSITIVETAGS</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga11ff99091a8f7fa179705bb3bff1aed2" title="When this macro is defined at compile time (undefined by default), prevents a server port from stayin...">WITH_SOCKET_CLOSE_ON_EXIT</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga32da1a1af344a155b0ad01e6dbb7daaa" title="When this macro is defined at compile time (undefined by default), the engine transmits TCP FIN using...">WITH_TCPFIN</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga0f1f2dd7a7d88f5acdaaab010d8e99ff" title="When this macro is defined at compile time (undefined by default), the engine is configured to enable...">WITH_SELF_PIPE</a></code></li>
<li><code><a class="el" href="group__group__with.html#ga3bb3800c453e42fa5549c413b0c917e9" title="When this macro is defined at compile time (undefined by default), the engine is configured to replac...">WITH_CRTOLF</a></code> </li>
</ul>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga176c2f40b17a2952361c37c4602a4c37"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAPDEFS_H</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default) then the header file specified by this macro is included in the build via <a class="el" href="stdsoap2_8h.html" title="This file defines the common macros, types and functions of the gSOAP API grouped by modules ...">stdsoap2.h</a>. </p>
<p>This macro specifies the name of a header file to include and can be used to configure the engine build by defining <a class="el" href="group__group__with.html">WITH_MACRO compile-time flags</a> and <a class="el" href="group__group__soap.html">SOAP_MACRO compile-time values</a>.</p>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">cat mydefs.h
#define WITH_OPENSSL
#define WITH_DOM
c++ -D SOAPDEFS_H=mydefs.h -o client stdsoap2.cpp dom.cpp soapC.cpp soapClient.cpp client.cpp -lcrypto -lssl
</pre></dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__with.html#ga24620333a812a36ed84902ff3d897ff6" title="When this macro is defined at compile time (undefined by default), a user-supplied file named soapdef...">WITH_SOAPDEFS_H</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gac12224709e8774c00afebe02a0ee0c8d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_C_LOCALE</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (defined by default for most platforms), the C locale is enabled in the engine, opposite of <code><a class="el" href="group__group__with.html#gac587d5d27bcbceffb66741f230333a67" title="When this macro is defined at compile time (undefined by default), the use of the C locale is disable...">WITH_NO_C_LOCALE</a></code> </p>
<p>This macro prevents floating point values from getting garbled by the standard locale-dependent <code>strtod</code> and <code>sprintf</code> functions used by the engine, for example when the current locale of the machine redefines the decimal point. </p>

</div>
</div>
<a class="anchor" id="ga3a99ea572d2ad520776c2a92a5f50304"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_CASEINSENSITIVETAGS</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), enables case insensitive XML tag name parsing and validation. </p>
<p>XML is case sensitive, whereas HTML is case insensitive. XML parsing is always case insensitive unless overruled by thie macro.</p>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">c++ -D WITH_CASEINSENSITIVETAGS -c stdsoap2.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="ga2e3f4fd002ffd6b7f0b675a2dd78ca17"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_CDATA</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), retains the parsed CDATA sections in literal XML strings. </p>
<p>Literal XML strings are built-in <code><a class="el" href="group__group__context.html#ga5c62d26b4823b76c5b4ef29e7865d3f0">_XML</a></code> types (a typedef of <code>char*</code>) in the .h file for soapcpp2, or a user-defined <code>typedef std::string XML</code> to define a <code>XML</code> literal string. Literal XML strings contain XML, but CDATA sections are stripped by the XML parser unless this macro is enabled.</p>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">soapcpp2 -C myservice.h
c++ -D WITH_CDATA -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp
</pre> <div class="fragment"><div class="line"><span class="comment">// example myservice.h file for soapcpp2</span></div><div class="line"><span class="comment">//gsoap ns service name: example</span></div><div class="line"><span class="comment">//gsoap ns service namespace: urn:example</span></div><div class="line"><span class="keywordtype">int</span> ns__webmethod(<a class="code" href="group__group__context.html#ga5c62d26b4823b76c5b4ef29e7865d3f0">_XML</a> <span class="keywordtype">string</span>, <a class="code" href="group__group__context.html#ga5c62d26b4823b76c5b4ef29e7865d3f0">_XML</a> *response); <span class="comment">// _XML is a literal XML string (a char* type)</span></div></div><!-- fragment --> <div class="fragment"><div class="line"><span class="comment">// example client.cpp file</span></div><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;example.nsmap&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga51cde138234ed7ec8c4e25bdf6418658">soap_new1</a>(<a class="code" href="group__group__flags.html#ga0bfffccff8ea0245f4de6670a0b36e69">SOAP_XML_INDENT</a>);</div><div class="line"><span class="keywordflow">if</span> (soap_call_ns__webmethod(soap, <a class="code" href="structsoap.html#aed1b86b8a34aea86103751a932c9dce9">endpoint</a>, NULL, <span class="stringliteral">&quot;&lt;doc title=\&quot;Example\&quot;&gt;Some text&lt;/doc&gt;&quot;</span>, &amp;r))</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line"><span class="keywordflow">else</span></div><div class="line">  printf(<span class="stringliteral">&quot;XML = %s\n&quot;</span>, response);</div><div class="line"><a class="code" href="group__group__context.html#gaf7d0176161e9def36981e24faa1913d9">soap_destroy</a>(soap);</div><div class="line"><a class="code" href="group__group__context.html#ga81a009ae1ea825a05e5241e2b7a8ece9">soap_end</a>(soap);</div><div class="line"><a class="code" href="group__group__context.html#ga57108ca4681186e58b5b189c3528f10a">soap_free</a>(soap);</div></div><!-- fragment --> Request and response messages: <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;&lt;?<span class="keyword">xml</span> <span class="keyword">version</span>=<span class="stringliteral">&quot;1.0&quot;</span> <span class="keyword">encoding</span>=<span class="stringliteral">&quot;UTF-8&quot;</span>?&gt;</div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;&lt;<span class="keywordtype">SOAP-ENV:Envelope</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;    <span class="keyword">xmlns:SOAP-ENV</span>=<span class="stringliteral">&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;    <span class="keyword">xmlns:SOAP-ENC</span>=<span class="stringliteral">&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;    <span class="keyword">xmlns:xsi</span>=<span class="stringliteral">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;    <span class="keyword">xmlns:xsd</span>=<span class="stringliteral">&quot;http://www.w3.org/2001/XMLSchema&quot;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;    <span class="keyword">xmlns:ns</span>=<span class="stringliteral">&quot;urn:example&quot;</span>&gt;</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160; &lt;<span class="keywordtype">SOAP-ENV:Body</span>&gt;</div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;  &lt;<span class="keywordtype">ns:webmethod</span>&gt;</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;    &lt;<span class="keywordtype">doc</span> <span class="keyword">title</span>=<span class="stringliteral">&quot;Example&quot;</span>&gt;<span class="keyword">Some</span> <span class="keyword">text</span>&lt;/<span class="keywordtype">doc</span>&gt;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;  &lt;/<span class="keywordtype">ns:webmethod</span>&gt;</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160; &lt;/<span class="keywordtype">SOAP-ENV:Body</span>&gt;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;&lt;/<span class="keywordtype">SOAP-ENV:Envelope</span>&gt;</div></div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;&lt;?<span class="keyword">xml</span> <span class="keyword">version</span>=<span class="stringliteral">&quot;1.0&quot;</span> <span class="keyword">encoding</span>=<span class="stringliteral">&quot;UTF-8&quot;</span>?&gt;</div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;&lt;<span class="keywordtype">SOAP-ENV:Envelope</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;    <span class="keyword">xmlns:SOAP-ENV</span>=<span class="stringliteral">&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;    <span class="keyword">xmlns:SOAP-ENC</span>=<span class="stringliteral">&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;    <span class="keyword">xmlns:xsi</span>=<span class="stringliteral">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;    <span class="keyword">xmlns:xsd</span>=<span class="stringliteral">&quot;http://www.w3.org/2001/XMLSchema&quot;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;    <span class="keyword">xmlns:ns</span>=<span class="stringliteral">&quot;urn:example&quot;</span>&gt;</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160; &lt;<span class="keywordtype">SOAP-ENV:Body</span>&gt;</div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;  &lt;<span class="keywordtype">ns:webmethodResponse</span>&gt;</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;   &lt;![<span class="keyword">CDATA</span>[&lt;<span class="keywordtype">doc</span> <span class="keyword">title</span>=<span class="stringliteral">&quot;Example&quot;</span>&gt;<span class="keyword">Some</span> <span class="keyword">text</span>&lt;/<span class="keywordtype">doc</span>&gt;]]&gt;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;  &lt;/<span class="keywordtype">ns:webmethodResponse</span>&gt;</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160; &lt;/<span class="keywordtype">SOAP-ENV:Body</span>&gt;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;&lt;/<span class="keywordtype">SOAP-ENV:Envelope</span>&gt;</div></div><!-- fragment --> Output with <code><a class="el" href="group__group__with.html#ga2e3f4fd002ffd6b7f0b675a2dd78ca17" title="When this macro is defined at compile time (undefined by default), retains the parsed CDATA sections ...">WITH_CDATA</a></code>: <pre class="fragment">XML = &lt;![CDATA[&lt;doc title="Example"&gt;Some text&lt;/doc&gt;]]&gt;
</pre> Output without <code><a class="el" href="group__group__with.html#ga2e3f4fd002ffd6b7f0b675a2dd78ca17" title="When this macro is defined at compile time (undefined by default), retains the parsed CDATA sections ...">WITH_CDATA</a></code>: <pre class="fragment">XML = &lt;doc title="Example"&gt;Some text&lt;/doc&gt;</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="ga447e0fdc3b39acab817a73181b16cc14"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_COMPAT</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), removes dependency on C++ <code>std::string</code> and <code>std::iostream</code> libraries. </p>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">c++ -D WITH_COMPAT -c stdsoap2.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="ga77f061a12d88eb8b7dae8b07cf90e29d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_COOKIES</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), HTTP cookie support is enabled in the engine. </p>
<p>Use the following functions to set and get HTTP cookie values:</p><ul>
<li><code><a class="el" href="group__group__cookies.html#ga7d5b0588ea763e511772f0cc2498e322" title="Add a cookie. ">soap_set_cookie</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#gae22594f7ccdd5476bcdd93626b3006ef" title="Set cookie expiration. ">soap_set_cookie_expire</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#gac7ecc82a09c396a50c56ce801662de71" title="Set cookie secure. ">soap_set_cookie_secure</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#ga5f7d712b3d1c7c2a09741aa45621dfb5" title="Set session cookie. ">soap_set_cookie_session</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#gac6b00dc725a0e74cf0342070151da94f" title="Clear cookie. ">soap_clr_cookie</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#ga760df00c0998efaeaddc39e401f3e168" title="Clear session cookie. ">soap_clr_cookie_session</a></code></li>
<li><code><a class="el" href="structsoap__cookie.html" title="Cookie structure. ">soap_cookie</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#ga0dd82c4fd7b499208d2402b195a182fe" title="Get cookie value. ">soap_cookie_value</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#gaac3464da4691fe86b2421bafecee0b6d" title="Get cookie expiration. ">soap_cookie_expire</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#ga7e55b641c3a3d6f9710b523e41917fe8" title="Get cookies from the HTTP_COOKIE environment variable. ">soap_getenv_cookies</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#gacf59ec191a3c7012dd6171f7db3d2c6b" title="Free cookies. ">soap_free_cookies</a></code></li>
</ul>
<p>Client-side HTTP cookie handling is automatic. The <code><a class="el" href="group__group__with.html#ga77f061a12d88eb8b7dae8b07cf90e29d" title="When this macro is defined at compile time (undefined by default), HTTP cookie support is enabled in ...">WITH_COOKIES</a></code> flag is useless without server-side session management and control. Cookies may require a fair amount of processing overhead and are not needed to implement stateful services, which is typically performed with session IDs in XML/JSON messages or via the URL.</p>
<dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_COOKIES -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp
c++ -D WITH_COOKIES -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp
</pre></dd></dl>
<dl class="section see"><dt>See also</dt><dd>The <a href="../../sessions/html/index.html">HTTP Server Session Management plugin</a> documentation to use the HTTP session plugin to store a database of sessions to keep track of client data across multiple requests. </dd></dl>

</div>
</div>
<a class="anchor" id="ga3bb3800c453e42fa5549c413b0c917e9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_CRTOLF</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), the engine is configured to replace CRLF (carriage return <code>#xD</code> followed by line feed <code>#xA</code>) by LF and replace single CR by LF. </p>
<p>This macro affects C/C++ string serialization to XML. If <code>char*</code>, <code>wchar_t*</code>, <code>std::string</code>, or <code>std::wstring</code> values assigned by an application contain CR, then this macro effectively removes all CR in the normalized XML output by replacing CRLF with LF and each plain CR with a LF. This macro does not affect parsed and deserialized strings and does not affect <code><a class="el" href="group__group__context.html#ga5c62d26b4823b76c5b4ef29e7865d3f0">_XML</a></code> literal string serialization to XML i.e. strings containing raw XML.</p>
<p>The XML 1.1. standard recommends replacing CRLF by LF and each single CR by LF in XML character data. This flag is useful when C/C++ string values to serialize to XML may contain CR characters.</p>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">c++ -D WITH_CRTOLF -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp
</pre> <div class="fragment"><div class="line"><span class="comment">// compiled with compile-time flag -D WITH_CRTOLF</span></div><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keyword">struct </span>ns__webmethodResponse result;</div><div class="line">... <span class="comment">//</span></div><div class="line"><span class="keywordflow">if</span> (soap_call_ns__webmethod(soap, endpoint, NULL, <span class="stringliteral">&quot;Message\r\n&quot;</span>, &amp;result))</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line"><span class="keywordflow">else</span></div><div class="line">  ... <span class="comment">// success</span></div></div><!-- fragment --> In the example shown above, the message <code>Message\n</code> will be sent. </dd></dl>

</div>
</div>
<a class="anchor" id="gad994e1b9a0209a5da210eab3a69c52e1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_DEFAULT_VIRTUAL</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), enables C++ base service classes with default virtual methods returning fault <code><a class="el" href="group__group__errors.html#gab0c5959ec4b7509ce48d9a29c8601fad" title="A soap_status error code: the service request dispatcher did not find a matching service operation fo...">SOAP_NO_METHOD</a></code> </p>
<p>Use <code><a class="el" href="group__group__with.html#gad994e1b9a0209a5da210eab3a69c52e1" title="When this macro is defined at compile time (undefined by default), enables C++ base service classes w...">WITH_DEFAULT_VIRTUAL</a></code> to make C++ service class operation methods return <code><a class="el" href="group__group__errors.html#gab0c5959ec4b7509ce48d9a29c8601fad" title="A soap_status error code: the service request dispatcher did not find a matching service operation fo...">SOAP_NO_METHOD</a></code> for rapid Web API prototyping and development.</p>
<dl class="section note"><dt>Note</dt><dd>Requires <b><code>soapcpp2 -j</code></b> option <b><code>-j</code></b> or option <b><code>-i</code></b> to generate C++ service classes.</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">soapcpp2 -j myservice.h
c++ -D WITH_DEFAULT_VIRTUAL -o server stdsoap2.cpp soapC.cpp soapMyService.cpp server.cpp
</pre> <div class="fragment"><div class="line"><span class="comment">// example myservice.h file for soapcpp2</span></div><div class="line"><span class="comment">//gsoap ns service name: example</span></div><div class="line"><span class="comment">//gsoap ns service namespace: urn:example</span></div><div class="line"><span class="keyword">struct </span>ns__webmethodResponse {</div><div class="line">  <span class="keywordtype">char</span> *string;</div><div class="line">};</div><div class="line"><span class="keywordtype">int</span> ns__webmethod(<span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keyword">struct</span> ns__webmethodResponse *response);</div></div><!-- fragment --> <div class="fragment"><div class="line"><span class="comment">// example server.cpp file</span></div><div class="line"><span class="preprocessor">#include &quot;soapexampleService.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;example.nsmap&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">class </span>MyService : <span class="keyword">public</span> exampleService {</div><div class="line">  <span class="keyword">public</span>:</div><div class="line">    <span class="keyword">virtual</span> <span class="keywordtype">int</span> webmethod(<span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keyword">struct</span> ns__webmethodResponse *response)</div><div class="line">    {</div><div class="line">      response-&gt;string = string;</div><div class="line">      <span class="keywordflow">return</span> <a class="code" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0">SOAP_OK</a>;</div><div class="line">    }</div><div class="line">    <span class="comment">// note: other methods (if any) will return SOAP_NO_METHOD</span></div><div class="line">};</div><div class="line"><span class="keywordtype">int</span> main()</div><div class="line">{</div><div class="line">  <span class="keywordflow">return</span> MyService().run(PORTNUM);</div><div class="line">}</div></div><!-- fragment --> </dd></dl>

</div>
</div>
<a class="anchor" id="gac446a18bcd54c58c0b62362f2e6113e2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_DOM</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), enables WS-Security signature verification and XML re-canonicalization, i.e. this macro must be defined when using the gSOAP WSSE plugin for WS-Security. </p>
<p>To enable DOM parsing use <code><a class="el" href="group__group__flags.html#gaf16803276fca85d51698e5371a37b34e" title="soap_mode XML input/output flag value to enable DOM node tree construction of the XML received and se...">SOAP_XML_DOM</a></code>, for example:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga51cde138234ed7ec8c4e25bdf6418658">soap_new1</a>(<a class="code" href="group__group__flags.html#gaf16803276fca85d51698e5371a37b34e">SOAP_XML_DOM</a>);</div><div class="line">... <span class="comment">// call an XML service operation that deserializes the response</span></div><div class="line"><span class="keywordflow">if</span> (soap-&gt;<a class="code" href="structsoap.html#ab7114dcbd53dfdb3518af7bb3e2d41ab">dom</a>) <span class="comment">// we also got a DOM</span></div><div class="line">{</div><div class="line">  <span class="keyword">const</span> <span class="keyword">struct </span>soap_dom_element *elt = soap-&gt;<a class="code" href="structsoap.html#ab7114dcbd53dfdb3518af7bb3e2d41ab">dom</a>;</div><div class="line">  ... <span class="comment">// inspect the DOM using the DOM API functions</span></div><div class="line">}</div></div><!-- fragment --><dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_OPENSSL -D WITH_DOM -o client stdsoap2.cpp dom.cpp soapC.cpp soapClient.cpp client.cpp plugin/smdevp.c plugin/mecevp.c plugin/wsseapi.c plugin/threads.c -lcrypto -lssl
c++ -D WITH_OPENSSL -D WITH_DOM -o server stdsoap2.cpp dom.cpp soapC.cpp soapServer.cpp server.cpp plugin/smdevp.c plugin/mecevp.c plugin/wsseapi.c plugin/threads.c -lcrypto -lssl
</pre></dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__flags.html#gaf16803276fca85d51698e5371a37b34e" title="soap_mode XML input/output flag value to enable DOM node tree construction of the XML received and se...">SOAP_XML_DOM</a></code> and the gSOAP <a href="../../dom/html/index.html">XML DOM API documentation</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf82a624c2531f5e26bf234bc39ae07bd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_FAST</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time uses faster memory allocation at a cost of larger memory blocks allocated (defined by default except with <code><a class="el" href="group__group__with.html#gaae03aa5dd66b0251c11ba8fc2fe29ecf" title="When this macro is defined at compile time (undefined by default), memory footprint is significantly ...">WITH_LEAN</a></code> and <code><a class="el" href="group__group__with.html#ga6c72f5017edb6930c54a8f70d9fb40b9" title="When this macro is defined at compile time (undefined by default), memory footprint is further reduce...">WITH_LEANER</a>)</code> </p>
<dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_FAST -D WITH_LEANER -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp
c++ -D WITH_FAST -D WITH_LEAN -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="gac697013bbde81d22d15d83d122f85f18"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_FASTCGI</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), enables and configures the engine and generated code to use FastCGI at the server side. </p>
<p>Call <code><a class="el" href="group__group__io.html#ga51dba7706a505240bd8935c0b28e419d" title="Serve a pending request. ">soap_serve</a></code> (or the C++ service class <code>serve</code> method) to serve CGI and FastCGI requests (only FastCGI requires <code><a class="el" href="group__group__with.html#gac697013bbde81d22d15d83d122f85f18" title="When this macro is defined at compile time (undefined by default), enables and configures the engine ...">WITH_FASTCGI</a></code> but CGI works without this configuration).</p>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">soapcpp2 myservice.h
c++ -D WITH_FASTCGI -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp
</pre> <div class="fragment"><div class="line"><span class="comment">// example server.cpp</span></div><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">int</span> main()</div><div class="line">{</div><div class="line">  <span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line">  <a class="code" href="group__group__io.html#ga51dba7706a505240bd8935c0b28e419d">soap_serve</a>(soap);</div><div class="line">  <a class="code" href="group__group__context.html#gaf7d0176161e9def36981e24faa1913d9">soap_destroy</a>(soap);</div><div class="line">  <a class="code" href="group__group__context.html#ga81a009ae1ea825a05e5241e2b7a8ece9">soap_end</a>(soap);</div><div class="line">  <a class="code" href="group__group__context.html#ga57108ca4681186e58b5b189c3528f10a">soap_free</a>(soap);</div><div class="line">}</div><div class="line">... <span class="comment">// web method implementations</span></div></div><!-- fragment --> </dd></dl>

</div>
</div>
<a class="anchor" id="gaba33a0ba79add64c641997a7e5070f27"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_GNUTLS</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library to enable HTTPS in the engine. </p>
<p>Use the following functions to configure SSL/TLS connections and to accept SSL/TLS connections:</p><ul>
<li><code><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f" title="Initialize the SSL/TLS library. ">soap_ssl_init</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga0391e39e900926438969dc2461634574" title="Do not initalized the SSL/TLS library. ">soap_ssl_noinit</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga990083effa5d8ed931fd75dc2630a2cc" title="Accept SSL/TLS connection. ">soap_ssl_accept</a></code></li>
</ul>
<dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_GNUTLS -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp -lgnutls
c++ -D WITH_GNUTLS -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp -lgnutls</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="gad30a07ea604aea8cb00f41f6310cf30f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_GZIP</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), enables linkage with the zlib library for HTTP message compression (using compress and gzip methods) when the <code><a class="el" href="group__group__flags.html#gafa62be7ba46b50d58608a066f442c2a8" title="soap_mode ENC output flag value to compress messages sent, requires zlib enabled with compile-time fl...">SOAP_ENC_ZLIB</a></code> mode flag is enabled at runtime. </p>
<p>To enable compression with the gzip method and decompression with the compress and gzip methods, use <code><a class="el" href="group__group__flags.html#gafa62be7ba46b50d58608a066f442c2a8" title="soap_mode ENC output flag value to compress messages sent, requires zlib enabled with compile-time fl...">SOAP_ENC_ZLIB</a></code>:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga51cde138234ed7ec8c4e25bdf6418658">soap_new1</a>(<a class="code" href="group__group__flags.html#gafa62be7ba46b50d58608a066f442c2a8">SOAP_ENC_ZLIB</a>);</div></div><!-- fragment --><dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_GZIP -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp -lz
c++ -D WITH_GZIP -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp -lz
</pre></dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__with.html#gad2cdc1f87f3fc46b92e957d9e251797c" title="When this macro is defined at compile time (undefined by default), enables linking the zlib library f...">WITH_ZLIB</a></code> to only enable compress but not gzip compression. </dd></dl>

</div>
</div>
<a class="anchor" id="ga3a92e63a0dd8b9d3701d001cafcde955"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_INCLUDE_XLOCALE_H</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (defined by default for most platforms), include xlocale.h to define <code>locale_t</code> and the <code>_l</code> locale-specific functions. </p>

</div>
</div>
<a class="anchor" id="gab08b437f239f365c2a266d25e45b0148"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_INSECURE_COOKIES</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), HTTP cookie support is enabled (as <code><a class="el" href="group__group__with.html#ga77f061a12d88eb8b7dae8b07cf90e29d" title="When this macro is defined at compile time (undefined by default), HTTP cookie support is enabled in ...">WITH_COOKIES</a></code>) but allows cookies with their Secure flag set to be sent over insecure channels. </p>
<p>Use the following functions to set and get HTTP cookie values:</p><ul>
<li><code><a class="el" href="group__group__cookies.html#ga7d5b0588ea763e511772f0cc2498e322" title="Add a cookie. ">soap_set_cookie</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#gae22594f7ccdd5476bcdd93626b3006ef" title="Set cookie expiration. ">soap_set_cookie_expire</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#gac7ecc82a09c396a50c56ce801662de71" title="Set cookie secure. ">soap_set_cookie_secure</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#ga5f7d712b3d1c7c2a09741aa45621dfb5" title="Set session cookie. ">soap_set_cookie_session</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#gac6b00dc725a0e74cf0342070151da94f" title="Clear cookie. ">soap_clr_cookie</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#ga760df00c0998efaeaddc39e401f3e168" title="Clear session cookie. ">soap_clr_cookie_session</a></code></li>
<li><code><a class="el" href="structsoap__cookie.html" title="Cookie structure. ">soap_cookie</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#ga0dd82c4fd7b499208d2402b195a182fe" title="Get cookie value. ">soap_cookie_value</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#gaac3464da4691fe86b2421bafecee0b6d" title="Get cookie expiration. ">soap_cookie_expire</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#ga7e55b641c3a3d6f9710b523e41917fe8" title="Get cookies from the HTTP_COOKIE environment variable. ">soap_getenv_cookies</a></code></li>
<li><code><a class="el" href="group__group__cookies.html#gacf59ec191a3c7012dd6171f7db3d2c6b" title="Free cookies. ">soap_free_cookies</a></code></li>
</ul>
<dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_INSECURE_COOKIES -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp
c++ -D WITH_INSECURE_COOKIES -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp
</pre></dd></dl>
<dl class="section see"><dt>See also</dt><dd>The <a href="../../sessions/html/index.html">HTTP Server Session Management plugin</a> documentation to use the HTTP session plugin to store a database of sessions to keep track of client data across multiple requests. </dd></dl>

</div>
</div>
<a class="anchor" id="ga40cbd680e7dbdeb63bce1d6d4b7b9620"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_IPV6</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), IPv6 support is enabled and both IPv4 and IPv6 connections are supported by the engine. </p>
<p>Use <code><a class="el" href="structsoap.html#a08f1b076f0f041cdf89b9a969520fd4a" title="User-definable flag, when nonzero uses AF_INET6 instead of PF_UNSPEC when binding the soap::master so...">soap::bind_inet6</a></code> and <code><a class="el" href="structsoap.html#a90e04027ea9efa26e550f5438ab9f3d6" title="User-definable flag, when nonzero enables IPPROTO_IPV6 setsockopt IPV6_V6ONLY when binding the soap::...">soap::bind_v6only</a></code> at runtime to configure port bindings at the server side:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line">soap-&gt;<a class="code" href="structsoap.html#a08f1b076f0f041cdf89b9a969520fd4a">bind_inet6</a> = 1;  <span class="comment">// to use AF_INET6 instead of PF_UNSPEC</span></div><div class="line">soap-&gt;<a class="code" href="structsoap.html#a90e04027ea9efa26e550f5438ab9f3d6">bind_v6only</a> = 1; <span class="comment">// to setsockopt IPPROTO_IPV6 IPV6_V6ONLY</span></div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__soap.html#gaaae8747f4cdacee575875c3a2488d99c">soap_valid_socket</a>(<a class="code" href="group__group__io.html#ga0a9725a3edbc27b97456190fee47cc18">soap_bind</a>(soap, NULL, PORTNUM, BACKLOG)))</div><div class="line">  ...</div></div><!-- fragment --><dl class="section user"><dt>Example:</dt><dd><pre class="fragment">c++ -D WITH_IPV6 -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="ga2854fe8474c2f87a9916d892306cb94c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_IPV6_V6ONLY</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), IPv6-only is enabled for port binding at the server side by the engine to ensure that a socket will only use IPv6 without mapping IPv4 to IPv6. </p>
<p>Alternatively, compile with <code><a class="el" href="group__group__with.html#ga40cbd680e7dbdeb63bce1d6d4b7b9620" title="When this macro is defined at compile time (undefined by default), IPv6 support is enabled and both I...">WITH_IPV6</a></code> and set <code><a class="el" href="structsoap.html#a90e04027ea9efa26e550f5438ab9f3d6" title="User-definable flag, when nonzero enables IPPROTO_IPV6 setsockopt IPV6_V6ONLY when binding the soap::...">soap::bind_v6only</a></code> at runtime to do the same as <code><a class="el" href="group__group__with.html#ga2854fe8474c2f87a9916d892306cb94c" title="When this macro is defined at compile time (undefined by default), IPv6-only is enabled for port bind...">WITH_IPV6_V6ONLY</a></code>:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line">soap-&gt;<a class="code" href="structsoap.html#a08f1b076f0f041cdf89b9a969520fd4a">bind_inet6</a> = 1;  <span class="comment">// to use AF_INET6 instead of PF_UNSPEC</span></div><div class="line">soap-&gt;<a class="code" href="structsoap.html#a90e04027ea9efa26e550f5438ab9f3d6">bind_v6only</a> = 1; <span class="comment">// to setsockopt IPPROTO_IPV6 IPV6_V6ONLY</span></div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__soap.html#gaaae8747f4cdacee575875c3a2488d99c">soap_valid_socket</a>(<a class="code" href="group__group__io.html#ga0a9725a3edbc27b97456190fee47cc18">soap_bind</a>(soap, NULL, PORTNUM, BACKLOG)))</div><div class="line">  ...</div></div><!-- fragment --><dl class="section user"><dt>Example:</dt><dd><pre class="fragment">c++ -D WITH_IPV6_ONLY -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="gaae03aa5dd66b0251c11ba8fc2fe29ecf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_LEAN</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), memory footprint is significantly reduced by removing non-essential features from the engine and from the generated code. </p>
<dl class="section warning"><dt>Warning</dt><dd><code><a class="el" href="group__group__with.html#gaae03aa5dd66b0251c11ba8fc2fe29ecf" title="When this macro is defined at compile time (undefined by default), memory footprint is significantly ...">WITH_LEAN</a></code> disables the following features:<ul>
<li>UDP <code><a class="el" href="group__group__flags.html#ga388dae9abc80cd6f6d0ecfba383da03b" title="soap_mode IO input/output flag value to use UDP datagrams, message size is limited to UDP packet size...">SOAP_IO_UDP</a></code></li>
<li>HTTP keep-alive <code><a class="el" href="group__group__flags.html#ga0a4635737732c912058ff4dba668c1b2" title="soap_mode IO input and output flag value to keep the socket connection alive for SOAP_MAXKEEPALIVE me...">SOAP_IO_KEEPALIVE</a></code></li>
<li>HTTP authentication with <code><a class="el" href="structsoap.html#a2ede02095d98942f4c220fd17b495703" title="User-definable HTTP and NTLM authorization user id string for HTTP basic and NTLM authentication by t...">soap::userid</a></code> and <code><a class="el" href="structsoap.html#a22d219c98f0fcf456641277cc64174a3" title="User-definable HTTP and NTLM authorization password string required for HTTP basic and NTLM authentic...">soap::passwd</a></code></li>
<li>HTTP chunked transfers <code><a class="el" href="group__group__flags.html#gaea7443dc67c979b06cf347ed16db1b51" title="soap_mode IO output flag value to send HTTP chunked messages, buffers the message in packets of size ...">SOAP_IO_CHUNK</a></code> except HTTP chunked input</li>
<li>HTTP compression <code><a class="el" href="group__group__flags.html#gafa62be7ba46b50d58608a066f442c2a8" title="soap_mode ENC output flag value to compress messages sent, requires zlib enabled with compile-time fl...">SOAP_ENC_ZLIB</a></code> except HTTP compressed input</li>
<li>canonical XML <code><a class="el" href="group__group__flags.html#ga757fa32433be64f8c228b1ecce727815" title="soap_mode XML output flag value to send XML messages in exclusive canonical format as per W3C XML C14...">SOAP_XML_CANONICAL</a></code>, <code><a class="el" href="group__group__flags.html#ga9d9c51e90e17b0e56d819803a68268cf" title="soap_mode XML output flag value to send XML messages in exclusive canonical format as per W3C XML C14...">SOAP_XML_CANONICAL_NA</a></code></li>
<li>timeouts <code><a class="el" href="structsoap.html#af32b5f3975eac2bd1202571515859163" title="User-definable timeout when waiting to connect to a server at the client-side, positive timeout value...">soap::connect_timeout</a></code>, <code><a class="el" href="structsoap.html#a711bb3a53de7cc62429e4d3a2e0b5474" title="User-definable timeout to send a packet of data, positive timeout values are seconds, negative timeout values are microseconds, zero means no timeout (the value is 0 by default) ">soap::send_timeout</a></code>, <code><a class="el" href="structsoap.html#ac5d5fb92fffda724ccb3b038d2bb2388" title="User-definable timeout to receive a packet of data, positive timeout values are seconds, negative timeout values are microseconds, zero means no timeout (the value is 0 by default) ">soap::recv_timeout</a></code> and <code><a class="el" href="structsoap.html#afcf1d236d052579122f785d7639c43c7" title="User-definable timeout to send or receive an entire message, positive timeout values are seconds...">soap::transfer_timeout</a></code></li>
<li>socket flags <code><a class="el" href="structsoap.html#aae3eee771d8c4031d30d4ca7633edf9f" title="User-definable socket send and recv flags, for example assign MSG_NOSIGNAL to disable sigpipe (the va...">soap::socket_flags</a></code>, <code><a class="el" href="structsoap.html#a52a22fafc369b3a54fb0d16f53158794" title="User-definable setsockopt level SOL_SOCKET flags when connecting soap::socket to a server (the value ...">soap::connect_flags</a></code>, <code><a class="el" href="structsoap.html#a6b18b017ce2c77ac2b6331469094de59" title="User-definable setsockopt level SOL_SOCKET flags when binding soap::master socket (the value is 0 by ...">soap::bind_flags</a></code>, <code><a class="el" href="structsoap.html#ad98f12f602efdde049dbd367a43e7cb0" title="User-definable setsockopt level SOL_SOCKET flags (0 by default), when nonzero sets the soap::socket f...">soap::accept_flags</a></code></li>
<li><code>time_t</code> serialization as <code>xsd__dateTime</code> (use a string to store the date and time instead)</li>
<li><code><a class="el" href="group__group__io.html#gab331e9628197f71adb4caabacd20315e" title="Poll the connection. ">soap_poll</a></code> always returns <code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code></li>
</ul>
</dd>
<dd>
When this macro is define at the compiler's command line or in an IDE or by specifying <code><a class="el" href="group__group__with.html#ga176c2f40b17a2952361c37c4602a4c37" title="When this macro is defined at compile time (undefined by default) then the header file specified by t...">SOAPDEFS_H</a></code>, then all source code files of an application's project must be recompiled. Otherwise, <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context corruption errors may occur in the non-recompiled parts of the application, because the size of the <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context has changed.</dd></dl>
<dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_LEAN -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp
c++ -D WITH_LEAN -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="ga6c72f5017edb6930c54a8f70d9fb40b9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_LEANER</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), memory footprint is further reduced from <code><a class="el" href="group__group__with.html#gaae03aa5dd66b0251c11ba8fc2fe29ecf" title="When this macro is defined at compile time (undefined by default), memory footprint is significantly ...">WITH_LEAN</a></code> by removing non-essential features from the engine and from the generated code. </p>
<dl class="section warning"><dt>Warning</dt><dd><code><a class="el" href="group__group__with.html#ga6c72f5017edb6930c54a8f70d9fb40b9" title="When this macro is defined at compile time (undefined by default), memory footprint is further reduce...">WITH_LEANER</a></code> disables the following features:<ul>
<li>UDP <code><a class="el" href="group__group__flags.html#ga388dae9abc80cd6f6d0ecfba383da03b" title="soap_mode IO input/output flag value to use UDP datagrams, message size is limited to UDP packet size...">SOAP_IO_UDP</a></code></li>
<li>HTTP keep-alive <code><a class="el" href="group__group__flags.html#ga0a4635737732c912058ff4dba668c1b2" title="soap_mode IO input and output flag value to keep the socket connection alive for SOAP_MAXKEEPALIVE me...">SOAP_IO_KEEPALIVE</a></code></li>
<li>HTTP authentication with <code><a class="el" href="structsoap.html#a2ede02095d98942f4c220fd17b495703" title="User-definable HTTP and NTLM authorization user id string for HTTP basic and NTLM authentication by t...">soap::userid</a></code> and <code><a class="el" href="structsoap.html#a22d219c98f0fcf456641277cc64174a3" title="User-definable HTTP and NTLM authorization password string required for HTTP basic and NTLM authentic...">soap::passwd</a></code></li>
<li>HTTP chunked transfers <code><a class="el" href="group__group__flags.html#gaea7443dc67c979b06cf347ed16db1b51" title="soap_mode IO output flag value to send HTTP chunked messages, buffers the message in packets of size ...">SOAP_IO_CHUNK</a></code> except HTTP chunked input</li>
<li>HTTP compression <code><a class="el" href="group__group__flags.html#gafa62be7ba46b50d58608a066f442c2a8" title="soap_mode ENC output flag value to compress messages sent, requires zlib enabled with compile-time fl...">SOAP_ENC_ZLIB</a></code> except HTTP compressed input</li>
<li>canonical XML <code><a class="el" href="group__group__flags.html#ga757fa32433be64f8c228b1ecce727815" title="soap_mode XML output flag value to send XML messages in exclusive canonical format as per W3C XML C14...">SOAP_XML_CANONICAL</a></code>, <code><a class="el" href="group__group__flags.html#ga9d9c51e90e17b0e56d819803a68268cf" title="soap_mode XML output flag value to send XML messages in exclusive canonical format as per W3C XML C14...">SOAP_XML_CANONICAL_NA</a></code></li>
<li>timeouts <code><a class="el" href="structsoap.html#af32b5f3975eac2bd1202571515859163" title="User-definable timeout when waiting to connect to a server at the client-side, positive timeout value...">soap::connect_timeout</a></code>, <code><a class="el" href="structsoap.html#a711bb3a53de7cc62429e4d3a2e0b5474" title="User-definable timeout to send a packet of data, positive timeout values are seconds, negative timeout values are microseconds, zero means no timeout (the value is 0 by default) ">soap::send_timeout</a></code>, <code><a class="el" href="structsoap.html#ac5d5fb92fffda724ccb3b038d2bb2388" title="User-definable timeout to receive a packet of data, positive timeout values are seconds, negative timeout values are microseconds, zero means no timeout (the value is 0 by default) ">soap::recv_timeout</a></code> and <code><a class="el" href="structsoap.html#afcf1d236d052579122f785d7639c43c7" title="User-definable timeout to send or receive an entire message, positive timeout values are seconds...">soap::transfer_timeout</a></code></li>
<li>socket flags <code><a class="el" href="structsoap.html#aae3eee771d8c4031d30d4ca7633edf9f" title="User-definable socket send and recv flags, for example assign MSG_NOSIGNAL to disable sigpipe (the va...">soap::socket_flags</a></code>, <code><a class="el" href="structsoap.html#a52a22fafc369b3a54fb0d16f53158794" title="User-definable setsockopt level SOL_SOCKET flags when connecting soap::socket to a server (the value ...">soap::connect_flags</a></code>, <code><a class="el" href="structsoap.html#a6b18b017ce2c77ac2b6331469094de59" title="User-definable setsockopt level SOL_SOCKET flags when binding soap::master socket (the value is 0 by ...">soap::bind_flags</a></code>, <code><a class="el" href="structsoap.html#ad98f12f602efdde049dbd367a43e7cb0" title="User-definable setsockopt level SOL_SOCKET flags (0 by default), when nonzero sets the soap::socket f...">soap::accept_flags</a></code></li>
<li><code>time_t</code> serialization as <code>xsd__dateTime</code> (use a string to store the date and time instead)</li>
<li><code><a class="el" href="group__group__io.html#gab331e9628197f71adb4caabacd20315e" title="Poll the connection. ">soap_poll</a></code> always returns <code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code></li>
<li>wide string serializers</li>
<li>DIME and MIME/MTOM attachments</li>
<li>XML DOM operations with the DOM API</li>
</ul>
</dd>
<dd>
When this macro is define at the compiler's command line or in an IDE or by specifying <code><a class="el" href="group__group__with.html#ga176c2f40b17a2952361c37c4602a4c37" title="When this macro is defined at compile time (undefined by default) then the header file specified by t...">SOAPDEFS_H</a></code>, then all source code files of an application's project must be recompiled. Otherwise, <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context corruption errors may occur in the non-recompiled parts of the application, because the size of the <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context has changed.</dd></dl>
<dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_LEANER -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp
c++ -D WITH_LEANER -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="gac587d5d27bcbceffb66741f230333a67"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_NO_C_LOCALE</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), the use of the C locale is disabled in the engine, the opposite of <code><a class="el" href="group__group__with.html#gac12224709e8774c00afebe02a0ee0c8d" title="When this macro is defined at compile time (defined by default for most platforms), the C locale is enabled in the engine, opposite of WITH_NO_C_LOCALE ">WITH_C_LOCALE</a></code> </p>
<p>Defining this macro improves portability of the engine's source code on older platforms that do not have working versions of locale.h and xlocale.h.</p>
<dl class="section warning"><dt>Warning</dt><dd>When the current locale of the machine redefines the decimal point, floating point values may be rejected by the XML validator and may be garbled in XML and JSON output due to the standard locale-dependent <code>strtod</code> and <code>sprintf</code> functions.</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">c++ -D WITH_NO_C_LOCALE -c stdsoap2.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="ga376e550466f3e75f529e113fcf36f86a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_NOEMPTYNAMESPACES</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time, default empty namespaces are not required to parse XML and are disabled from XML messages when the <code><a class="el" href="group__group__flags.html#gaabf4437aeb9a8ae91bfbc3cdce538a6b" title="soap_mode XML output flag value to send XML messages with XML default namespaces for elements instead...">SOAP_XML_DEFAULTNS</a></code> mode flag is used. </p>
<p>This macro is intended for backward compatibility with old XML parsers and old gSOAP versions that do not support <em><code>xmlns=""</code></em> empty default namespaces. When used with the runtime <code><a class="el" href="group__group__flags.html#gaabf4437aeb9a8ae91bfbc3cdce538a6b" title="soap_mode XML output flag value to send XML messages with XML default namespaces for elements instead...">SOAP_XML_DEFAULTNS</a></code> mode flag, produces XML that lacks <em><code>xmlns=""</code></em> which should only be used for special cases and is not recommended in general.</p>
<dl class="section warning"><dt>Warning</dt><dd>This macro should only be used to resolve issues with older tools that do not support <em><code>xmlns=""</code></em> in XML messages or when XML messages should be parsed and validated that do not include <em><code>xmlns=""</code></em> that are normally expected in valid XML. </dd></dl>

</div>
</div>
<a class="anchor" id="gaa0f80155c2f036cd4da1735cafc9e60b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_NOEMPTYSTRUCT</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>When this macro is defined at compile time (undefined by default), omits SOAP Header and Fault serialization code, this flag prevents duplicate definitions in the source code generated by soapcpp2 When this macro is defined at compile time (defined for C but undefined for C++), the generated code by the soapcpp2 tool inserts a dummy member in empty structs to allow compilation to succeed with compilers that reject empty structs and unions </p>

</div>
</div>
<a class="anchor" id="gab0e1c923db1547a75ad010a3172c065a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_NOGLOBAL</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), omits SOAP Header and Fault serialization code, this flag prevents duplicate definitions in the source code generated by soapcpp2. </p>
<p>This macro is used in the generated files when <b><code>soapcpp2 -pname</code></b> option <b><code>-pname</code></b> is used. </p>

</div>
</div>
<a class="anchor" id="ga9e4012870cc520445f8bb0b08f8ae2bc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_NOHTTP</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), permanently removes the HTTP stack to reduce code size. </p>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">c++ -D WITH_NOHTTP -o xmlapp stdsoap2.cpp soapC.cpp xmlapp.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="gaea95327865324f1aba294f3ae5d13dd4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_NOIDREF</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), permanently disables XML ID (<code>id</code> attribute) and REF (<code>href</code> or <code>ref</code> attribute) processing rules associated with SOAP 1.1 and SOAP 1.2 "multi-reference" data to serialize object graphs, this is a more aggressive optimization option than the runtime <code><a class="el" href="group__group__flags.html#gaa631be9579f581f96ea5ecf91b837493" title="soap_mode XML input/output flag value to serialize C/C++ data structures as XML trees without id-href...">SOAP_XML_TREE</a></code> flag. </p>
<p>Alternatively, set <code><a class="el" href="group__group__flags.html#gaa631be9579f581f96ea5ecf91b837493" title="soap_mode XML input/output flag value to serialize C/C++ data structures as XML trees without id-href...">SOAP_XML_TREE</a></code> at runtime:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga51cde138234ed7ec8c4e25bdf6418658">soap_new1</a>(<a class="code" href="group__group__flags.html#gaa631be9579f581f96ea5ecf91b837493">SOAP_XML_TREE</a>);</div></div><!-- fragment --><dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_NOIDREF -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp
c++ -D WITH_NOIDREF -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp
</pre></dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__flags.html#gaa631be9579f581f96ea5ecf91b837493" title="soap_mode XML input/output flag value to serialize C/C++ data structures as XML trees without id-href...">SOAP_XML_TREE</a></code>, <code><a class="el" href="group__group__flags.html#gaf3ce7bc1679e665ac6b23da56510f645" title="soap_mode XML input/output flag value to serialize C/C++ (cyclic) data structures in XML with id-ref ...">SOAP_XML_GRAPH</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga93604d4f98eeeedcc7af19ff83192308"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_NOIO</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), removes all IO and socket library calls to replace these with user-supplied callback functions, see the IO callbacks in the user guide. </p>
<p>The following IO and socket-related functions should be defined by callbacks implemented by the user as follows:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">int</span> my_accept(<span class="keyword">struct</span> soap *soap, <a class="code" href="group__group__soap.html#ga6eb1bde7cecc2fbadbcbbc6395227439">SOAP_SOCKET</a> sock, <span class="keyword">struct</span> sockaddr *addr, <span class="keywordtype">int</span> *len) { ... }</div><div class="line"><span class="keywordtype">int</span> my_connect(<span class="keyword">struct</span> soap *soap, <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsoap.html#aed1b86b8a34aea86103751a932c9dce9">endpoint</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsoap.html#ab8f356cfb0a1ba87c26cb0ae4c9ee713">host</a>, <span class="keywordtype">int</span> <a class="code" href="structsoap.html#acef722da5f6789721603beeb0b505838">port</a>) { ... }</div><div class="line"><span class="keywordtype">int</span> my_disconnect(<span class="keyword">struct</span> soap *soap) { ... }</div><div class="line"><span class="keywordtype">int</span> my_closesocket(<span class="keyword">struct</span> soap *soap, <a class="code" href="group__group__soap.html#ga6eb1bde7cecc2fbadbcbbc6395227439">SOAP_SOCKET</a> sock) { ... }</div><div class="line"><span class="keywordtype">int</span> my_shutdownsocket(<span class="keyword">struct</span> soap *soap, <a class="code" href="group__group__soap.html#ga6eb1bde7cecc2fbadbcbbc6395227439">SOAP_SOCKET</a> sock, <span class="keywordtype">int</span> how) { ... }</div><div class="line"><span class="keywordtype">int</span> my_send(<span class="keyword">struct</span> soap *soap, <span class="keyword">const</span> <span class="keywordtype">char</span> *data, <span class="keywordtype">size_t</span> len) { ... }</div><div class="line"><span class="keywordtype">size_t</span> my_recv(<span class="keyword">struct</span> soap *soap, <span class="keywordtype">char</span> *<a class="code" href="structsoap.html#acda1736fbaac07261226befe165a5681">buf</a>, <span class="keywordtype">size_t</span> len) { ... }</div><div class="line"><span class="keywordtype">int</span> my_poll(<span class="keyword">struct</span> soap *soap) { ... }</div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line">soap-&gt;<a class="code" href="group__group__callbacks.html#ga8249b4c23f662dbe680ad0deef274ae8">faccept</a> = my_accept;</div><div class="line">soap-&gt;<a class="code" href="group__group__callbacks.html#ga9b4985eb5a588f4c16ad88ef7ca329dc">fopen</a> = my_connect;</div><div class="line">soap-&gt;<a class="code" href="group__group__callbacks.html#gab9591dd80dbb0e571784bad5421b2202">fclose</a> = my_disconnect;</div><div class="line">soap-&gt;<a class="code" href="group__group__callbacks.html#ga21edadcbd081c7f37822d04bb05a9d29">fclosesocket</a> = my_close;</div><div class="line">soap-&gt;<a class="code" href="group__group__callbacks.html#ga51e09ddf769a2ddcd874fb6e6fb5289d">fshutdownsocket</a> = my_shutdown;</div><div class="line">soap-&gt;<a class="code" href="group__group__callbacks.html#gafd52b80655e4f1021edd6c55b8dfedff">fsend</a> = my_send;</div><div class="line">soap-&gt;<a class="code" href="group__group__callbacks.html#ga0c218cd5552045745cc640998e25ed72">frecv</a> = my_recv;</div><div class="line">soap-&gt;<a class="code" href="group__group__callbacks.html#ga20210aa171019b27ef182d853e2d6e2f">fpoll</a> = my_poll;</div></div><!-- fragment --><p>The socket-related callbacks can be omitted when only basic IO operations are needed to read/write XML with the <code><a class="el" href="group__group__callbacks.html#ga0c218cd5552045745cc640998e25ed72" title="Callback that receives bytes of data into the given buffer. ">soap::frecv</a></code> and <code><a class="el" href="group__group__callbacks.html#gafd52b80655e4f1021edd6c55b8dfedff" title="Callback that sends the given bytes of data. ">soap::fsend</a></code> callbacks.</p>
<dl class="section warning"><dt>Warning</dt><dd>When this macro is define at the compiler's command line or in an IDE or by specifying <code><a class="el" href="group__group__with.html#ga176c2f40b17a2952361c37c4602a4c37" title="When this macro is defined at compile time (undefined by default) then the header file specified by t...">SOAPDEFS_H</a></code>, then all source code files of an application's project must be recompiled. Otherwise, <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context corruption errors may occur in the non-recompiled parts of the application, because the size of the <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context has changed.</dd></dl>
<dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_NOIO -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp
c++ -D WITH_NOIO -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp
</pre></dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__callbacks.html#ga8249b4c23f662dbe680ad0deef274ae8" title="Callback that waits for and accepts a socket connection requested by a client. ">soap::faccept</a></code>, <code><a class="el" href="group__group__callbacks.html#ga9b4985eb5a588f4c16ad88ef7ca329dc" title="Callback that opens a socket connection to a server endpoint. ">soap::fopen</a></code>, <code><a class="el" href="group__group__callbacks.html#gab9591dd80dbb0e571784bad5421b2202" title="Callback that closes the current socket connection. ">soap::fclose</a></code>, <code><a class="el" href="group__group__callbacks.html#ga21edadcbd081c7f37822d04bb05a9d29" title="Callback that closes a given socket. ">soap::fclosesocket</a></code>, <code><a class="el" href="group__group__callbacks.html#ga51e09ddf769a2ddcd874fb6e6fb5289d" title="Callback that shuts down a given socket. ">soap::fshutdownsocket</a></code>, <code><a class="el" href="group__group__callbacks.html#gafd52b80655e4f1021edd6c55b8dfedff" title="Callback that sends the given bytes of data. ">soap::fsend</a></code>, <code><a class="el" href="group__group__callbacks.html#ga0c218cd5552045745cc640998e25ed72" title="Callback that receives bytes of data into the given buffer. ">soap::frecv</a></code>, <code><a class="el" href="group__group__callbacks.html#ga20210aa171019b27ef182d853e2d6e2f" title="Callback that blocks until activity is detected on the soap::socket or soap::master socket...">soap::fpoll</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gac22000b4058bb41a88750d10785baaf1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_NONAMESPACES</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), removes dependence on the global <code><a class="el" href="group__group__namespace.html#gaabfac0a3b8d38498bc5e1e3bc465ead6" title="The global XML namespaces table with entries defined by the Namespace structure and populated in an ...">namespaces</a></code> table, rather users must set the XML namespaces explicitly by calling <code><a class="el" href="group__group__namespace.html#ga5ec913accc705cca3296ab75bae955a5" title="Activates an XML namespace table to generate and resolve xmlns namespace prefixes in XML messages...">soap_set_namespaces</a></code> </p>
<p>Applications developed with soapcpp2 options <code>-i</code> or <code>-j</code> assign a namespace table automatically to the <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context when the proxy or service object is instantiated. Other applications must set the namespace table explicitly, before processing XML, for example:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span><a class="code" href="struct_namespace.html">Namespace</a> my_namespaces[] = {</div><div class="line">  { <span class="stringliteral">&quot;SOAP-ENV&quot;</span>, <span class="stringliteral">&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;</span>, <span class="stringliteral">&quot;http://www.w3.org/*soap-envelope&quot;</span>,      NULL },</div><div class="line">  { <span class="stringliteral">&quot;SOAP-ENC&quot;</span>, <span class="stringliteral">&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;</span>, <span class="stringliteral">&quot;http://www.w3.org/*soap-encoding&quot;</span>,      NULL },</div><div class="line">  { <span class="stringliteral">&quot;xsi&quot;</span>,      <span class="stringliteral">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>, <span class="stringliteral">&quot;http://www.w3.org/*XMLSchema-instance&quot;</span>, NULL },</div><div class="line">  { <span class="stringliteral">&quot;xsd&quot;</span>,      <span class="stringliteral">&quot;http://www.w3.org/2001/XMLSchema&quot;</span>,          <span class="stringliteral">&quot;http://www.w3.org/*XMLSchema&quot;</span>,          NULL },</div><div class="line">  { <span class="stringliteral">&quot;ns&quot;</span>,       <span class="stringliteral">&quot;http://tempuri.org/ns.xsd&quot;</span>,                 NULL,                                    NULL },</div><div class="line">  { NULL,       NULL,                                        NULL,                                    NULL }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><a class="code" href="group__group__namespace.html#ga5ec913accc705cca3296ab75bae955a5">soap_set_namespaces</a>(soap, my_namespaces); <span class="comment">// use a specific XML namespace binding table for the next call</span></div><div class="line"><span class="keywordflow">if</span> (soap_call_ns__webmethod(soap, <a class="code" href="structsoap.html#aed1b86b8a34aea86103751a932c9dce9">endpoint</a>, NULL, ...))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">}</div><div class="line"><span class="keywordflow">else</span></div><div class="line">{</div><div class="line">  ...</div><div class="line">}</div><div class="line"><a class="code" href="group__group__namespace.html#ga5ec913accc705cca3296ab75bae955a5">soap_set_namespaces</a>(soap, <a class="code" href="group__group__namespace.html#gaabfac0a3b8d38498bc5e1e3bc465ead6">namespaces</a>); <span class="comment">// use the default XML namespace binding table, when defined, for the next call</span></div></div><!-- fragment --><p>This example defines SOAP 1.1 namespaces (<code>SOAP-ENV</code> and <code>SOAP-ENC</code>) to be used by default, but also accepts SOAP 1.2 because of the second URI in the third column. XML schema instance namespace <code>xsi</code> is used with <em><code>xsi:type</code></em> and <em><code>xsi:nil</code></em> and the XML schema namespace <code>xsd</code> is used with XSD types such as <em><code>xsd:string</code></em>, which may be used in XML messages. URI patterns in the third column may contain wildcard strings <code>*</code> and wildcard characters <code>-</code>.</p>
<dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_NONAMESPACES -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp
c++ -D WITH_NONAMESPACES -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="ga1c6f7ec29799a308133930ffc4d7109a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_NOZONE</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), removes and ignores the timezone in <em><code>xsd:dateTime</code></em> values. </p>
<dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_NOZONE -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp
c++ -D WITH_NOZONE -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="ga4a743d1499292194cfc81d305500c83f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_NTLM</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), enables linkage with the ntlm library for HTTP NTLM authentication. </p>
<p>The libntlm library is available at <a href="http://www.nongnu.org/libntlm">http://www.nongnu.org/libntlm</a> and required for non-Windows platforms.</p>
<dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_NTLM -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp -lntlm
c++ -D WITH_NTLM -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp -lntlm
</pre></dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="structsoap.html#af2c9e77616c132831ebf041d9e4d18b1" title="User-definable NTLM authentication challenge key string. ">soap::ntlm_challenge</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gae5fa06f0e13edb611016c85364b0d0f0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_OPENSSL</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for HTTPS and WS-Security (this macro should also be defined when using plugins that rely on OpenSSL) </p>
<p>Use the following functions to configure SSL/TLS connections and to accept SSL/TLS connections:</p><ul>
<li><code><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f" title="Initialize the SSL/TLS library. ">soap_ssl_init</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga0391e39e900926438969dc2461634574" title="Do not initalized the SSL/TLS library. ">soap_ssl_noinit</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga990083effa5d8ed931fd75dc2630a2cc" title="Accept SSL/TLS connection. ">soap_ssl_accept</a></code></li>
</ul>
<dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_OPENSSL -D WITH_DOM -o client stdsoap2.cpp dom.cpp soapC.cpp soapClient.cpp client.cpp plugin/smdevp.c plugin/mecevp.c plugin/wsseapi.c plugin/threads.c -lcrypto -lssl
c++ -D WITH_OPENSSL -D WITH_DOM -o server stdsoap2.cpp dom.cpp soapC.cpp soapServer.cpp server.cpp plugin/smdevp.c plugin/mecevp.c plugin/wsseapi.c plugin/threads.c -lcrypto -lssl</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="gaa0801009d3ed28b2c66063c26423fa8d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_PURE_VIRTUAL</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), makes C++ service class operation methods and the copy method pure virtual by defining <code><a class="el" href="group__group__soap.html#gad4edb63b6b20a8e5ac3891550013f64a" title="Macro is set to SOAP_PURE_VIRTUAL = 0 at compile time when macro WITH_PURE_VIRTUAL is defined...">SOAP_PURE_VIRTUAL</a></code> = 0. </p>
<p>Alternatively, use <code><a class="el" href="group__group__with.html#gad994e1b9a0209a5da210eab3a69c52e1" title="When this macro is defined at compile time (undefined by default), enables C++ base service classes w...">WITH_DEFAULT_VIRTUAL</a></code> to make C++ service class operation methods return <code><a class="el" href="group__group__errors.html#gab0c5959ec4b7509ce48d9a29c8601fad" title="A soap_status error code: the service request dispatcher did not find a matching service operation fo...">SOAP_NO_METHOD</a></code> for rapid Web API prototyping and development.</p>
<dl class="section note"><dt>Note</dt><dd>Requires <b><code>soapcpp2 -j</code></b> option <b><code>-j</code></b> or option <b><code>-i</code></b> to generate C++ service classes.</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">soapcpp2 -j myservice.h
c++ -D WITH_PURE_VIRTUAL -o server stdsoap2.cpp soapC.cpp soapexampleService.cpp server.cpp
</pre> <div class="fragment"><div class="line"><span class="comment">// example myservice.h file for soapcpp2</span></div><div class="line"><span class="comment">//gsoap ns service name: example</span></div><div class="line"><span class="comment">//gsoap ns service namespace: urn:example</span></div><div class="line"><span class="keyword">struct </span>ns__webmethodResponse {</div><div class="line">  <span class="keywordtype">char</span> *string;</div><div class="line">};</div><div class="line"><span class="keywordtype">int</span> ns__webmethod(<span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keyword">struct</span> ns__webmethodResponse *response);</div></div><!-- fragment --> <div class="fragment"><div class="line"><span class="comment">// example server.cpp file</span></div><div class="line"><span class="preprocessor">#include &quot;soapexampleService.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;example.nsmap&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">class </span>MyService : <span class="keyword">public</span> exampleService {</div><div class="line">  <span class="keyword">public</span>:</div><div class="line">    <span class="keyword">virtual</span> <span class="keywordtype">int</span> webmethod(<span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keyword">struct</span> ns__webmethodResponse *response)</div><div class="line">    {</div><div class="line">      response-&gt;string = string;</div><div class="line">      <span class="keywordflow">return</span> <a class="code" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0">SOAP_OK</a>;</div><div class="line">    }</div><div class="line">    <span class="keyword">virtual</span> MyService *copy()</div><div class="line">    {</div><div class="line">      <span class="keywordflow">return</span> <span class="keyword">new</span> MyService(); <span class="comment">// new instance, nothing shared or copied</span></div><div class="line">    }</div><div class="line">};</div><div class="line"><span class="keywordtype">int</span> main()</div><div class="line">{</div><div class="line">  <span class="keywordflow">return</span> MyService().run(PORTNUM);</div><div class="line">}</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__with.html#gad994e1b9a0209a5da210eab3a69c52e1" title="When this macro is defined at compile time (undefined by default), enables C++ base service classes w...">WITH_DEFAULT_VIRTUAL</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaa3632d9a171ac29a7cb4a4c4861d8e8d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_REPLACE_ILLEGAL_UTF8</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), replaces UTF-8 content that is outside the Unicode range with the value of <code><a class="el" href="group__group__soap.html#gaafe757ff5b99e03ae2c7814dedf9aa8e" title="A user-definable integer Unicode value representing a character that replaces an invalid Unicode code...">SOAP_UNKNOWN_UNICODE_CHAR</a></code> (Unicode FFFD) to indicate illegal UTF-8, set <code><a class="el" href="group__group__soap.html#gaafe757ff5b99e03ae2c7814dedf9aa8e" title="A user-definable integer Unicode value representing a character that replaces an invalid Unicode code...">SOAP_UNKNOWN_UNICODE_CHAR</a></code> to another integer code if desired (the value is 0xFFFD by default) </p>
<dl class="section warning"><dt>Warning</dt><dd>Without this macro the engine silently accepts UTF-8 content that is outside the Unicode character ranges U+0000 to U+D7FF, U+E000 to U+FFFD, U+10000 to U+10FFFF.</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">c++ -D WITH_REPLACE_ILLEGAL_UTF8 -c stdsoap2.cpp
</pre></dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__soap.html#gaafe757ff5b99e03ae2c7814dedf9aa8e" title="A user-definable integer Unicode value representing a character that replaces an invalid Unicode code...">SOAP_UNKNOWN_UNICODE_CHAR</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga0f1f2dd7a7d88f5acdaaab010d8e99ff"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_SELF_PIPE</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), the engine is configured to enable <code><a class="el" href="group__group__io.html#ga139afbf916c84724fef3f82aca4857d3" title="Close the connection of the specified context using a self-pipe. ">soap_close_connection</a></code> using a "self-pipe". </p>
<p>To use <code><a class="el" href="group__group__io.html#ga139afbf916c84724fef3f82aca4857d3" title="Close the connection of the specified context using a self-pipe. ">soap_close_connection</a></code> from another thread to terminate a thread that is blocked on socket IO requires <code><a class="el" href="structsoap.html#ac5d5fb92fffda724ccb3b038d2bb2388" title="User-definable timeout to receive a packet of data, positive timeout values are seconds, negative timeout values are microseconds, zero means no timeout (the value is 0 by default) ">soap::recv_timeout</a></code> and <code><a class="el" href="structsoap.html#a711bb3a53de7cc62429e4d3a2e0b5474" title="User-definable timeout to send a packet of data, positive timeout values are seconds, negative timeout values are microseconds, zero means no timeout (the value is 0 by default) ">soap::send_timeout</a></code> set to nonzero timeout values.</p>
<dl class="section warning"><dt>Warning</dt><dd>When this macro is define at the compiler's command line or in an IDE or by specifying <code><a class="el" href="group__group__with.html#ga176c2f40b17a2952361c37c4602a4c37" title="When this macro is defined at compile time (undefined by default) then the header file specified by t...">SOAPDEFS_H</a></code>, then all source code files of an application's project must be recompiled. Otherwise, <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context corruption errors may occur in the non-recompiled parts of the application, because the size of the <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context has changed.</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">c++ -D WITH_SELF_PIPE -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp
</pre></dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__io.html#ga139afbf916c84724fef3f82aca4857d3" title="Close the connection of the specified context using a self-pipe. ">soap_close_connection</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga24620333a812a36ed84902ff3d897ff6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_SOAPDEFS_H</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), a user-supplied file named soapdefs.h is included in the build, i.e. soapdefs.h can be used to configure the build by defining compile-time macros and flags. </p>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">cat soapdefs.h
#define WITH_OPENSSL
#define WITH_DOM
c++ -D WITH_SOAPDEFS_H -o client stdsoap2.cpp dom.cpp soapC.cpp soapClient.cpp client.cpp -lcrypto -lssl
</pre></dd></dl>
<p>Alternatively, set <code><a class="el" href="group__group__with.html#ga176c2f40b17a2952361c37c4602a4c37" title="When this macro is defined at compile time (undefined by default) then the header file specified by t...">SOAPDEFS_H</a></code> to the header file name to include in your build. For example: </p><pre class="fragment">cat mydefs.h
#define WITH_OPENSSL
#define WITH_DOM
c++ -D SOAPDEFS_H=mydefs.h -o client stdsoap2.cpp dom.cpp soapC.cpp soapClient.cpp client.cpp -lcrypto -lssl</pre> 
</div>
</div>
<a class="anchor" id="ga11ff99091a8f7fa179705bb3bff1aed2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_SOCKET_CLOSE_ON_EXIT</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), prevents a server port from staying in listening mode after exit by internally setting <code>fcntl(sock, F_SETFD, FD_CLOEXEC)</code> </p>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">c++ -D WITH_SOCKET_CLOSE_ON_EXIT -c stdsoap2.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="ga32da1a1af344a155b0ad01e6dbb7daaa"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_TCPFIN</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), the engine transmits TCP FIN using <code>shutdown(sock, SHUT_WR)</code> after all sends are completed and just before the socket closes. </p>
<dl class="section user"><dt>Example:</dt><dd><pre class="fragment">c++ -D WITH_TCPFIN -c stdsoap2.cpp</pre> </dd></dl>

</div>
</div>
<a class="anchor" id="gad2cdc1f87f3fc46b92e957d9e251797c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_ZLIB</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When this macro is defined at compile time (undefined by default), enables linking the zlib library for HTTP message compression when the <code><a class="el" href="group__group__flags.html#gafa62be7ba46b50d58608a066f442c2a8" title="soap_mode ENC output flag value to compress messages sent, requires zlib enabled with compile-time fl...">SOAP_ENC_ZLIB</a></code> mode flag is enabled at runtime. </p>
<p>To enable (de)compression with the compress method use <code><a class="el" href="group__group__flags.html#gafa62be7ba46b50d58608a066f442c2a8" title="soap_mode ENC output flag value to compress messages sent, requires zlib enabled with compile-time fl...">SOAP_ENC_ZLIB</a></code>:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga51cde138234ed7ec8c4e25bdf6418658">soap_new1</a>(<a class="code" href="group__group__flags.html#gafa62be7ba46b50d58608a066f442c2a8">SOAP_ENC_ZLIB</a>);</div></div><!-- fragment --><dl class="section user"><dt>Examples:</dt><dd><pre class="fragment">c++ -D WITH_ZLIB -o client stdsoap2.cpp soapC.cpp soapClient.cpp client.cpp -lz
c++ -D WITH_ZLIB -o server stdsoap2.cpp soapC.cpp soapServer.cpp server.cpp -lz
</pre></dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__with.html#gad30a07ea604aea8cb00f41f6310cf30f" title="When this macro is defined at compile time (undefined by default), enables linkage with the zlib libr...">WITH_GZIP</a></code> to also enable the gzip compression method in addition to compress. </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<hr class="footer">
<address class="footer">
Copyright (C) 2021, Robert van Engelen, Genivia Inc., All Rights Reserved.
</address>
<address class="footer"><small>
Converted on Tue Apr 20 2021 19:48:13 by <a target="_blank" href="http://www.doxygen.org/index.html">Doxygen</a> 1.8.11</small></address>
<br>
<div style="height: 246px; background: #DBDBDB;">
</body>
</html>
